/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.jenisbiaya;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.sadhar.sia.common.ClassConnection;
import org.sadhar.sia.common.ClassUtility;
import org.springframework.jdbc.core.RowMapper;

/**
 *
 * @author bloodrunk
 */
public class JenisBiayaDAOImpl implements JenisBiayaDAO {

    public JenisBiayaDAOImpl() {
        ClassConnection.getTransactionProxyFactoryBean().setTarget(this);
    }

    /**
     * Digunakan untuk mendapatkan seluruh data jenisBiaya dari tabel ppmk.jenisBiaya
     * @return
     * @throws Exception
     */
    public List<JenisBiaya> list() throws Exception {
        List<JenisBiaya> jenisBiayas = new ArrayList<JenisBiaya>();
        List<Map> row = ClassConnection.getJdbc().queryForList("SELECT * FROM ppmk.jenisBiaya");
        for (Map m : row) {
            JenisBiaya jenisBiaya = new JenisBiaya();
            jenisBiaya.setKodeJenisBiaya(Integer.valueOf(m.get("kodeJenisBiaya").toString()));
            jenisBiaya.setNamaJenisBiaya(m.get("jenisBiaya").toString());
            jenisBiayas.add(jenisBiaya);
        }
        return jenisBiayas;
    }

    /**
     * Digunakan untuk mendapatkan data jenisBiaya dari tabel ppmk.jenisBiaya berdasarkan kode
     * @param kode sebagai kodeJenisBiaya dari tabel ppmk.jenisBiaya
     * @return
     * @throws Exception
     */
    public JenisBiaya select(int kode) throws Exception {
        String sql = "SELECT * FROM ppmk.jenisBiaya WHERE kodeJenisBiaya=?";
        return (JenisBiaya) ClassConnection.getJdbc().queryForObject(sql, new Object[]{Integer.valueOf(kode)},
                new RowMapper() {

                    public Object mapRow(ResultSet rs, int rowNum)
                            throws SQLException {
                        return new JenisBiaya(
                                rs.getInt("kodeItem"),
                                rs.getString("jenisBiaya"));
                    }
                });
    }

    /**
     * Digunakan untuk mendapatkan data jenisBiaya dari tabel ppmk.jenisBiaya berdasarkan nama
     * @param nama sebagai parameter dari tabel ppmk.jenisBiaya
     * @return
     * @throws Exception
     */
    public JenisBiaya select(String nama) throws Exception {
        String sql = "SELECT * FROM ppmk.jenisBiaya WHERE jenisBiaya=?";
        return (JenisBiaya) ClassConnection.getJdbc().queryForObject(sql, new Object[]{ClassUtility.quote(nama)},
                new RowMapper() {

                    public Object mapRow(ResultSet rs, int rowNum)
                            throws SQLException {
                        return new JenisBiaya(
                                rs.getInt("kodeJenisBiaya"),
                                rs.getString("jenisBiaya"));
                    }
                });
    }

    /**
     * Digunakan untuk mendapatkan data jenisBiaya dari tabel ppmk.jenisBiaya berdasarkan nama
     * @param key sebagain jenisBiaya yang diambil dari tabel ppmk.jenisBiaya
     * @return
     * @throws Exception
     */
    public List<JenisBiaya> list(String key) throws Exception {
        System.out.println(key);
        String sql = "SELECT * FROM ppmk.jenisBiaya WHERE namaJenisBiaya LIKE ?";
        List<JenisBiaya> jenisBiayas = new ArrayList<JenisBiaya>();
        List<Map> rows = ClassConnection.getJdbc().queryForList(sql, new Object[]{"%" + key + "%"});
        for (Map m : rows) {
            JenisBiaya jenisBiaya = new JenisBiaya();
            jenisBiaya.setKodeJenisBiaya(Integer.parseInt(m.get("kodeJenisBiaya").toString()));
            jenisBiaya.setNamaJenisBiaya(m.get("namaJenisBiaya").toString());
            jenisBiayas.add(jenisBiaya);
        }
        return jenisBiayas;
    }
}
